package com.atguigu.gulimall.product.entity;

import com.atguigu.common.vaild.AddGroup;
import com.atguigu.common.vaild.ListValue;
import com.atguigu.common.vaild.UpdateGroup;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.io.Serializable;
import java.util.Date;
import lombok.Data;
import org.hibernate.validator.constraints.URL;

import javax.validation.constraints.*;

/**
 * 品牌
 *
 * @author yhuangqiang
 * @email 17759789981@163.com
 * @date 2023-09-02 07:51:13
 */
@Data
@TableName("pms_brand")
public class BrandEntity implements Serializable {
	private static final long serialVersionUID = 1L;

	/**
	 * 品牌id
	 */
	@TableId
	@NotNull(message = "修改必须指定品牌id",groups = {UpdateGroup.class})
	@Null(message = "新增不能指定id",groups = {AddGroup.class})
	private Long brandId;

	/**
	 * 品牌名
	 */
	//@NotNull // 不能为null 可以为空
	@NotBlank(message = "品牌名不能为空",groups = {AddGroup.class}) // 不能为null 并且最少包含一个非空字符
	//@NotEmpty // 不能为null 或者不能为空
	private String name;
	/**
	 * 品牌logo地址。在添加时需要判断该值是否为空，并且url是否合法
	 */
	@URL(message = "logo地址必修是一个合法的url",groups = {AddGroup.class})
	@NotBlank(message = "logo地址不能为空",groups = {AddGroup.class})
	private String logo;
	/**
	 * 介绍 添加是该值不能为空
	 */
	@NotBlank(message = "介绍不能为空",groups = {AddGroup.class})
	private String descript;
	/**
	 * 显示状态[0-不显示；1-显示] 添加和修改时都必须校验该值是否为0或1
	 */
	@ListValue(vals = {0,1},groups = {AddGroup.class, UpdateGroup.class})
	private Integer showStatus;
	/**
	 * 检索首字母 添加时要判断是否为空，并且符合规则。修改时可以为空
	 */
	@Pattern(regexp = "^[a-zA-Z]$",message = "必须为一个a-zA-Z的单个字母",groups = {AddGroup.class, UpdateGroup.class})
	@NotBlank(message = "检索首字母不能为空",groups = {AddGroup.class})
	private String firstLetter;
	/**
	 * 排序
	 */
	@Min(value = 0,message = "排序必须大于等于0",groups={AddGroup.class,UpdateGroup.class})
	private Integer sort;

}
